foldNat :: (Integer -> Integer) -> Integer -> Integer -> Integer
foldNat fSuc base 0 = base
foldNat fSuc base n = fSuc (foldNat fSuc base (n-1))

potencia :: Integer -> Integer -> Integer
potencia x y = foldNat (*x) 1 y